﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using SoftHotel.Models;
using PagedList;
using System.Data;
using System.Data.Entity;

namespace SoftHotel.Controllers
{
    public class UsuariosController : Controller
    {
        //
        // GET: /Usuarios/

        private ClienteDAO cliDAO = new ClienteDAO();
        private TrabajadorDAO traDAO = new TrabajadorDAO();
        private PerfilDAO perDAO = new PerfilDAO();
        private UsuarioDAO usuDAO = new UsuarioDAO();
        public ActionResult Index()
        {
            return View();
        }

        [HttpPost]
        public ActionResult Index(Usuario cliente, string button)
        {
            if (button == "Buscar")
            {
                return RedirectToAction("Buscar", cliente); //Model de Buscar es IEnumerable (*)
            }
            else
                return RedirectToAction("Create");
        }

        //
        // GET: /Usuarios/Details/5

        public ActionResult Details(int id)
        {

            return View();
        }

        [HttpGet]
        public ActionResult BuscarCliente()
        {

            var clientesAux = cliDAO.clientes.Include(a => a.objeTipoDoc).Include(a => a.objEstado).Include(a => a.objTipoCliente);

            clientesAux = clientesAux.OrderByDescending(s => s.apellidoPaterno.ToLower());

            int tamanhoPagina = 5;
            int NumPagina = 1;
            return PartialView("BuscarCliente", clientesAux.ToPagedList(NumPagina, tamanhoPagina));
        }
        [HttpPost]
        public ActionResult BuscarCliente(Cliente cliente)
        {
            return Content(cliente.idCliente.ToString());
        }

        [HttpGet]
        public ActionResult BuscarTrabajador()
        {
            var trabajadores = traDAO.Trabajadores.Include(t => t.sede).Include(t => t.pTipoDoc).Include(t => t.pEstadoCivil).Include(t => t.pSexo).Include(t => t.pDepartamento).Include(t => t.pProvincia).Include(t => t.pCargo).Include(t => t.pEstado);
            return PartialView("BuscarTrabajador", trabajadores.ToList());
        }

        [HttpPost]
        public ActionResult BuscarTrabajador(Trabajador trabajador)
        {
            return Content(trabajador.idTrabajador.ToString());
        }


        //
        // GET: /Usuarios/Create

        public ActionResult Create()
        {
            ViewBag.perfiles = new SelectList(perDAO.perfiles, "idPerfil", "nombre");
            //   Usuario usuario = new Usuario();
            return View();
        }

        //
        // POST: /Usuarios/Create

        [HttpPost]
        public ActionResult Create(Usuario usuario, string button)
        {
            try
            {
                usuDAO.usuarios.Add(usuario);
                usuDAO.SaveChanges();
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }

        //
        // GET: /Usuarios/Edit/5

        public ActionResult Edit(int id)
        {
            return View();
        }

        //
        // POST: /Usuarios/Edit/5

        [HttpPost]
        public ActionResult Edit(int id, FormCollection collection)
        {
            try
            {
                // TODO: Add update logic here

                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }

        //
        // GET: /Usuarios/Delete/5

        public ActionResult Delete(int id)
        {
            return View();
        }

        //
        // POST: /Usuarios/Delete/5

        [HttpPost]
        public ActionResult Delete(int id, FormCollection collection)
        {
            try
            {
                // TODO: Add delete logic here

                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }
    }
}
